
package Facade;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.EJB;
import restaurante.entidades.*;
import restaurante.sessionbeans.*;

@Stateless 
public class RestFacadeBean implements RestFacadeRemote,RestFacadeLocal{
    @EJB
    RestFacadeRemote rfr;
    @EJB
    ClienteFacadeLocal clien;
    @EJB
    ProductoFacadeLocal prod;  
    
    
    
    //Agregado Por Max
    @EJB
    UsuarioFacadeLocal usuarioFacadeLocal;
    @EJB
    MesaFacadeLocal mesaFacadeLocal;
    @EJB
    EmpleadoFacadeLocal empleadoFacadeLocal;
    @EJB
    PedidoFacadeLocal pedidoFacadeLocal;
    @EJB
    DetallePedidoFacadeLocal detallePedidoFacadeLocal;
    @EJB
    TipoComprobanteFacadeLocal tipoComprobanteFacadeLocal;
    @EJB
    DescuentoFacadeLocal descuentoFacadeLocal;
    @EJB
    ComprobanteFacadeLocal comprobanteFacadeLocal;
    @Override
    public String obtenerCorrelativoCliente(){
        return clien.obtenerCorrelativo();
    }
    @Override
    public List<Descuento> listarDescuentos(){
        return descuentoFacadeLocal.findAll();
    }
    @Override
    public List<TipoComprobante> listarTipoComprobante(){
        return tipoComprobanteFacadeLocal.findAll();
    }
    @Override
    public List<Usuario> listarUsuarios(){
        return usuarioFacadeLocal.findAll();
    }
    @Override
    public boolean insertarUsuario(Usuario u){
        usuarioFacadeLocal.create(u);;
        return true;
    }
    @Override
    public List<Mesa> listarMesas(){
        return mesaFacadeLocal.findAll();
    }
        @Override
    public Mesa getMesa(Integer cod){
        return mesaFacadeLocal.find(cod);
    }
    
    @Override
    public Empleado getEmpleado(String cod){
        return empleadoFacadeLocal.find(cod);
    }
    
    @Override
    public boolean agregarPedido(Pedido p){
        pedidoFacadeLocal.create(p);
        return true;
    }
    @Override
    public boolean modificarPedido(Pedido p){
        pedidoFacadeLocal.edit(p);
        return true;
    }
    @Override
    public List<Pedido> listarPedidos(){
        return pedidoFacadeLocal.listarPedidosActivos();
    }
    @Override
    public Pedido obtenerPedidoActivo(Pedido p){
        return pedidoFacadeLocal.obtenerPedidoActivo(p);
    }
    @Override
    public int getMaxCount(){
        return pedidoFacadeLocal.getCountMax();
    }
    @Override
    public int getMaxCountDetallePedido(){
        return detallePedidoFacadeLocal.obtenerIdDetallePedido();
    }
    @Override
    public List<DetallePedido> listarDetallePedidoDePedido(Pedido pedido){
        return detallePedidoFacadeLocal.listarDetallePedido(pedido);
    }
    @Override
    public boolean agregarDetallePedido(DetallePedido detallePedido){
        detallePedidoFacadeLocal.create(detallePedido);
        return true;
    }
    @Override
    public int obtenerCorrelativoComprobante(){
        return comprobanteFacadeLocal.obtenerCorrelativo();
    }
    @Override
    public boolean agregarComprobante(Comprobante comprobante){
        comprobanteFacadeLocal.create(comprobante);
        return true;
    }
    @Override
    public Descuento getDescuento(Integer d){
        return descuentoFacadeLocal.find(d);
    }
    
    @Override
    public boolean agregarCliente(Cliente cliente){
        clien.create(cliente);
        return true;
    }
    
    //Fin Agregado Por Max
    
    ///// PARA CLIENTES //////
    @Override
    public boolean registrarCliente(Cliente cli){
        Cliente aux= clien.find(cli.getIdCliente());
        if(aux==null){
            clien.create(cli);
            return true;
        }
        return false;
    }
    
    @Override    
    public List<Cliente> listaClientes(){
        return clien.findAll();         
    }    
    @Override
    public int genCodCliente(){
        return clien.count()+1;
    }
    
    @Override
    public Cliente getCliente(String id){
        return clien.find(id);
    }
    
    @Override
    public void eliminarCli(Cliente cli){
        clien.remove(cli);
    }
    
    @Override
    public void ModificarCli(Cliente cli){
        clien.edit(cli);
    }
    
    @Override
    public List<Cliente> buscaCli(String cadBus){
        return clien.buscaCli(cadBus);
    }
    
    //// PARA PRODUCTOS ///////////////////////  
    @Override
    public List<Producto> listarProducto(){
        return prod.findAll();
    }
    
    @Override
    public boolean registrarProducto(Producto p){
        
        Producto pro=prod.find(p.getIdproducto());
        if (pro==null){
            prod.create(p);
            return true;
        }
        return false;
    }
    
    @Override
    public int genCodProducto(){
        return prod.getClave();
    }
    
    @Override
    public void eliminarPro(Producto pro){
        prod.remove(pro);
    }
    
    @Override
    public void ModificarPro(Producto pro){
        prod.edit(pro);
    }
    
    @Override
    public Producto getProducto(Integer id){
        return prod.find(id);
    }
    
    @Override
    public List<Producto> buscaCoin(String cad){
        return prod.buscarCoin(cad);
    }
}
